/**
 * @file API 服务
 * @description 统一管理所有 API 调用
 * @author Fieldano Team
 * @创建时间 2025-10-30
 */

import { ajax } from './ajax'
import type { AxiosResponse } from 'axios'
import type { ApiResponse } from './ajax'

// ==================== 类型定义 ====================

/**
 * 分页参数
 */
export interface PaginationParams {
  page: number
  pageSize: number
  keyword?: string
  sortBy?: string
  sortOrder?: 'asc' | 'desc'
}

/**
 * 分页响应数据
 */
export interface PaginationResponse<T> {
  list: T[]
  total: number
  page: number
  pageSize: number
  totalPages: number
}

// ==================== 示例 API（根据实际需求修改）====================

/**
 * 示例：用户相关 API
 *
 * 使用方式：
 * ```typescript
 * import { exampleApi } from '@/utils/api'
 *
 * // 获取数据
 * const response = await exampleApi.getData()
 * console.log(response.data.data)
 * ```
 */
export const exampleApi = {
  /**
   * 获取示例数据
   */
  getData(): Promise<AxiosResponse<ApiResponse<any>>> {
    return ajax.get('/api/example/data', {
      showLoading: true
    })
  },

  /**
   * 创建示例数据
   */
  createData(data: any): Promise<AxiosResponse<ApiResponse<any>>> {
    return ajax.post('/api/example/data', data, {
      showLoading: true,
      showError: true
    })
  },

  /**
   * 更新示例数据
   */
  updateData(id: number, data: any): Promise<AxiosResponse<ApiResponse<any>>> {
    return ajax.put(`/api/example/data/${id}`, data, {
      showLoading: true,
      showError: true
    })
  },

  /**
   * 删除示例数据
   */
  deleteData(id: number): Promise<AxiosResponse<ApiResponse<void>>> {
    return ajax.delete(`/api/example/data/${id}`, {
      showLoading: true,
      showError: true
    })
  }
}

// ==================== 统一导出 ====================

/**
 * API 服务集合
 *
 * 使用方式：
 * ```typescript
 * import api from '@/utils/api'
 *
 * // 调用 API
 * const response = await api.example.getData()
 * ```
 */
export const api = {
  example: exampleApi
  // 在这里添加更多的 API 模块
  // auth: authApi,
  // user: userApi,
  // contact: contactApi,
  // ...
}

export default api
